import turtle, random

# 创建一个画布窗口
window = turtle.Screen()

# 创建一个乌龟对象t，代表玩家
t = turtle.Pen()

# 创建敌人乌龟对象enemy
enemy = turtle.Pen()
enemy.pensize(8)  # 设置敌人乌龟的画笔粗细
enemy.color("red")  # 设置敌人乌龟的颜色为红色
enemy.shape("triangle")  # 设置敌人乌龟的形状为三角形

# 设置玩家乌龟的形状为默认的乌龟形状
t.shape("turtle")

# 将玩家乌龟的画笔提起，移动时不会有轨迹
t.penup()
# 将玩家乌龟移动到坐标(100, 100)的位置
t.goto(100, 100)

# 定义一个函数，用于检查玩家乌龟是否到达边界并处理边界条件
def checkbound():
    boxsize = 300
    if t.xcor() > boxsize:
        t.goto(boxsize, t.ycor())
    if t.xcor() < -boxsize:
        t.goto(-boxsize, t.ycor())
    if t.ycor() > boxsize:
        t.goto(t.xcor(), boxsize)
    if t.ycor() < -boxsize:
        t.goto(t.xcor(), -boxsize)

# 定义玩家乌龟前进的函数
def up():
    t.forward(10)
    checkbound()

# 定义玩家乌龟左转的函数
def left():
    t.left(45)

# 定义玩家乌龟右转的函数
def right():
    t.right(45)

# 定义玩家乌龟后退的函数
def back():
    t.bk(10)
    checkbound()

# 定义玩家乌龟瞬移的函数
def teleport():
    t.goto(random.randint(-200, 200), random.randint(-200, 200))

# 为键盘按键绑定对应的函数
window.onkeypress(up, "Up")
window.onkeypress(left, "Left")
window.onkeypress(right, "Right")
window.onkeypress(back, "Down")
window.onkeypress(teleport, "space")

# 使窗口开始监听键盘按键事件
window.listen()

# 初始化一个标志，表示玩家是否被敌人抓住
caught = False

# 主循环，玩家未被抓住时继续执行
while caught == False:
    # 让敌人朝向玩家移动
    enemy.seth(enemy.towards(t))
    enemy.fd(1)
    # 如果敌人距离玩家的距离小于5个单位，玩家被抓住
    if enemy.distance(t) < 5:
        caught = True
        print("你被敌人抓住了！！！！")
        # 改变玩家乌龟的画笔颜色为红色
        t.pencolor("red")
        # 在玩家乌龟的位置写上“死”，使用指定的字体和大小
        t.write("死", align="center", font=(r"C:\Windows\Fonts\STHUPO.TTF", 50, "bold"))
    # 根据敌人与玩家的距离改变玩家乌龟的填充颜色
    if enemy.distance(t) < 20:
        t.fillcolor("red")
    elif enemy.distance(t) < 50:
        t.fillcolor("yellow")
    else:
        t.fillcolor("green")

# 结束程序
turtle.done()